home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / R-Shows / (c)woc x 92a.d64 / yatzy (.txt) < prev   
Commodore BASIC  |  2007-02-04  |  8KB  |  250 lines

  1. 0 REM YATZY - ROBERT B. COOK
  2. 100 GOSUB380:GOSUB412:GOSUB326
  3. 102 GOSUB114:GOSUB174
  4. 104 GOSUB202:GOSUB286
  5. 106 C1=C1+1:IFC1=NP*13THEN314
  6. 108 PL=PL+1:IFPL>NPTHENPL=1
  7. 110 GOTO102
  8. 112 = START =
  9. 114 PRINT"[146][144]"TAB(58)LEFT$("[180][144]#1 [180][144]#2 [180][144]#3 [180][144]#4 [181]",NP*6+2)
  10. 116 PRINT""TAB(54+PL*4)" #"MID$(STR$(PL),2)" [146][180]"
  11. 118 RL=1:PRINTDN$TAB(36)"[145]"RN$(1)
  12. 120 FORL1=1TO5:POKE2040+L1,200:DI(L1)=0:NEXT:POKESP+21,62
  13. 122 GOSUB130:IFRL=4THENRETURN
  14. 124 GOSUB154:IFRD>0THEN122
  15. 126 RETURN
  16. 128 = ROLL DICE =
  17. 130 FORL1=1TO5
  18. 132 IFDI(L1)=0THENDN(L1)=INT(RND(1)*6+1)
  19. 134 NEXT
  20. 136 FORL1=1TO5:IFDI(L1)=1THEN146
  21. 138 T1=INT(RND(1)*6+1)
  22. 140 POKEWV,129:POKELF,85:POKEHF,36
  23. 142 POKE2040+L1,192+T1:FORL2=1TO25:NEXT:POKEWV,128
  24. 144 DI(L1)=1:IFT1<>DN(L1)THEN138
  25. 146 NEXT
  26. 148 RL=RL+1:IFRL<4THENPRINTDN$TAB(36)"[145]"RN$(RL)
  27. 150 RETURN
  28. 152 = CHOOSE DICE =
  29. 154 POKESP+1,92:POKESP+21,63:RD=0:T1=1
  30. 156 JS=PEEK(56320)AND31:IFJS=31THEN156
  31. 158 IFJS=15ANDT1=0THENFORL1=1TO5:POKE2040+L1,192+DN(L1):DI(L1)=1:NEXT:RD=0
  32. 160 IFJS=15ANDT1=6THEN170
  33. 162 IFJS=15ANDT1>0THENPOKE2040+T1,200:RD=RD+1:DI(T1)=0
  34. 164 IFJS=29THENT1=T1+1:IFT1>6THENT1=6
  35. 166 IFJS=30THENT1=T1-1:IFT1<0THENT1=0
  36. 168 POKESP+1,68+24*T1:FORL1=1TO99:NEXT:GOTO156
  37. 170 WAIT56320,16,15:RETURN
  38. 172 = CHOOSE LINE =
  39. 174 POKESP+21,254
  40. 176 LN=1:POKESP+15,86
  41. 178 JS=PEEK(56320)AND31:IFJS=31THEN178
  42. 180 IFJS=15ANDMX(PL,LN)=0THENRETURN
  43. 182 IFJS=15THENGOSUB308
  44. 184 FORL1=1TO99:NEXT:IFJS=30THEN194
  45. 186 IFJS<>29THEN178
  46. 188 LN=LN+1:IFLN=7THENLN=11
  47. 190 IFLN>17THENLN=1
  48. 192 GOTO198
  49. 194 LN=LN-1:IFLN=10THENLN=6
  50. 196 IFLN<1THENLN=17
  51. 198 POKESP+15,78+LN*8:GOTO178
  52. 200 = CALCULATE =
  53. 202 SC=0:MX(PL,LN)=1
  54. 204 ON-(LN<7)GOTO208:GOTO222
  55. 206 = UPPER =
  56. 208 FORL1=1TO5
  57. 210 IFDN(L1)=LNTHENSC=SC+LN
  58. 212 NEXT
  59. 214 SC(PL,1)=SC(PL,1)+SC:IFSC(PL,1)>62THENSC(PL,2)=35
  60. 216 SC(PL,3)=SC(PL,1)+SC(PL,2):SC(PL,5)=SC(PL,3)+SC(PL,4)
  61. 218 RETURN
  62. 220 = LOWER =
  63. 222 T1=0:T2=0:SC=0
  64. 224 FORL1=1TO6:CT(L1)=0:NEXT
  65. 226 FORL1=1TO5:T2=T2+DN(L1):FORL2=1TO6
  66. 228 IFDN(L1)=L2THENCT(L2)=CT(L2)+1
  67. 230 NEXT:NEXT
  68. 232 ONLN-10GOSUB240,240,250,262,262,274,282
  69. 234 SC(PL,4)=SC(PL,4)+SC:SC(PL,5)=SC(PL,3)+SC(PL,4)
  70. 236 RETURN
  71. 238 * 3 OR 4 OF A KIND *
  72. 240 FORL1=1TO6
  73. 242 IFLN=11ANDCT(L1)>2THENSC=T2
  74. 244 IFLN=12ANDCT(L1)>3THENSC=T2
  75. 246 NEXT:RETURN
  76. 248 * FULL HOUSE *
  77. 250 FORL1=1TO6
  78. 252 IFCT(L1)=2THENT1=T1+2
  79. 254 IFCT(L1)=3THENT1=T1+3
  80. 256 IFT1=5THENSC=25
  81. 258 NEXT:RETURN
  82. 260 * SMALL STRAIGHT OR LARGE STRAIGHT *
  83. 262 FORL1=1TO6
  84. 264 T1=T1+1:IFCT(L1)=0THENT1=0
  85. 266 IFLN=14ANDT1=4THENSC=30
  86. 268 IFLN=15ANDT1=5THENSC=40
  87. 270 NEXT:RETURN
  88. 272 * YATZY *
  89. 274 FORL1=1TO6
  90. 276 IFCT(L1)=5THENSC=50
  91. 278 NEXT:RETURN
  92. 280 * CHANCE *
  93. 282 SC=T2:RETURN
  94. 284 = PRINT =
  95. 286 POKE646,0:IFLN=16THENPOKE646,4
  96. 288 PRINTLEFT$(DN$,LN+4)TAB(19+(4*(PL-1)))RIGHT$(" "+STR$(SC),3)
  97. 290 GOSUB302
  98. 292 FORL=1TO5:T=VAL(MID$("01112132224",L*2,2))
  99. 294 POKE646,1:IFL=2THENPOKE646,2
  100. 296 PRINTLEFT$(DN$,T)TAB(19+(4*(PL-1)))RIGHT$(" "+STR$(SC(PL,L)),3)
  101. 298 NEXT:POKESP+21,62:RETURN
  102. 300 = BLIP =
  103. 302 POKESR,240:POKEWV,17:POKEHF,50:POKELF,35
  104. 304 FORL1=1TO99:NEXT:POKEWV,16:POKESR,0:RETURN
  105. 306 = BUZZ =
  106. 308 POKESR,240:POKEWV,33:POKEHF,5
  107. 310 FORL1=1TO150:NEXT:POKEWV,32:RETURN
  108. 312 = END GAME =
  109. 314 POKESP+21,0:POKE829,234
  110. 316 PRINT" PRESS  FIRE "
  111. 318 FORL1=1TONP:HS=SC(L1,5):IFHS<=PEEK(829+L1*2)*256+PEEK(830+L1*2)THEN322
  112. 320 POKE829+L1*2,HS/256:POKE830+L1*2,(HS/256-INT(HS/256))*256
  113. 322 NEXT:WAIT56320,16,16:WAIT56320,16,15:RUN
  114. 324 = SCREEN =
  115. 326 PRINT"[147][182] [176][192][174][176][192][174][176][192][174][176][192][174][176][192][174] [146][207][183][183][183][207][183][183][183][207][183][183][183][207][183][183][183][181][158]    "
  116. 328 PRINT"[182] [221]Y[221][221]A[221][221]T[221][221]Z[221][221]Y[221] [146][180]   [180]   [180]   [180]   [181][158]    "
  117. 330 PRINT"[182] [173][192][189][173][192][189][173][192][189][173][192][189][173][192][189] [146][204][175][175][175][204][175][175][175][204][175][175][175][204][175][175][175][181][158]UNDO"
  118. 332 PRINT"[182][154] HIGH SCORE      [146][165]   [165]   [165]   [165]   [181][158][183][183][183][183]
  119. 334 [153]"ABSSTOPACES........FNSTOPADD FN   FN   FN   FN   INT
  120. 336 PRINT"[182][144]DEUCES......[165][144]ADD [165]   [165]   [165]   [165]   [181]
  121. 338 [153]"ABSSTOPTHREES......FNSTOPADD FN   FN   FN   FN   INT
  122. 340 PRINT"[182][144]FOURS.......[165][144]ADD [165]   [165]   [165]   [165]   [181]
  123. 342 [153]"ABSSTOPFIVES.......FNSTOPADD FN   FN   FN   FN   INT
  124. 344 PRINT"[182][144]SIXES.......[165][144]ADD [165]   [165]   [165]   [165]   [181]
  125. 346 [153]"ABS SUB TOTAL       WAITFN   FN   FN   FN   INT
  126. 348 PRINT"[182] BONUS (63) [146][165]=35 [165]   [165]   [165]   [165]   [181]
  127. 350 [153]"ABS TOTAL UPPER     WAITFN   FN   FN   FN   INT
  128. 352 PRINT"[182][183][183][183][183][183][183][183][183][183][183][183][183][207][183][183][183][183][207][183][183][183][207][183][183][183][207][183][183][183][207][183][183][183][181]
  129. 354 [153]"ABSSTOP3 OF A KIND.FNSTOPADD FN   FN   FN   FN   INT
  130. 356 PRINT"[182][144]4 OF A KIND.[165][144]ADD [165]   [165]   [165]   [165]   [181]
  131. 358 [153]"ABSSTOPFULL HOUSE..FNSTOP=25 FN   FN   FN   FN   INT
  132. 360 PRINT"[182][144]SM STRAIGHT.[165][144]=30 [165]   [165]   [165]   [165][160]  [181]
  133. 362 [153]"ABSSTOPLG STRAIGHT.FNSTOP=40 FN   FN   FN   FN   INT
  134. 364 PRINT"[182][156]YATZY       [146][165][156]=50 [165]   [165]   [165]   [165]   [181][129][175][175][175][175]
  135. 366 [153]"ABSSTOPCHANCE......FNSTOPADD FN   FN   FN   FN   INTFORROLL
  136. 368 PRINT"[182] TOTAL LOWER     [146][165]   [165]   [165]   [165]   [181][129][207][183][183][208]
  137. 370 [153]"ABSUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRWAIT(null)USRUSRUSR(null)USRUSRUSR(null)USRUSRUSR(null)USRUSRUSRINTFORFN  +
  138. 372 PRINT"[182] GRAND TOTAL     [146][165]   [165]   [165]   [165]   [181][129][165]  [167]
  139. 374 [153]"ABS                                 WAITINTFOR(null)ANDANDSQRCONT
  140. 376 FORL1=1TONP:PRINT"[154]"TAB(15+L1*4)RIGHT$(" "+STR$(HS(L1)),3);:NEXT:RETURN
  141. 378 ========== O P T I O N S ===========
  142. 380 POKE53281,15:POKE53280,15:NP=1
  143. 382 PRINT"[147][156]       [176][192][192][192][174][176][192][192][192][174][176][192][192][192][174][176][192][192][192][174][176][192][192][192][174]
  144. 384 [153]"       (null)(null)(null)WAITSTEP(null)(null)COSPOSLOGWAIT(null)(null)NEW NEWWAIT(null)(null)NEWRNDWAITSTEP(null)(null)(null)(null)WAITSTEP(null)
  145. 386 PRINT"       [221]  [146] [221][221] [146][197] [146][221][221]  [146][221][221][169][188][146][162][221][221] [146] [221]
  146. 388 [153]"       /TANTANTANEXP/TANTANTANEXP/TANTANTANEXP/TANTANTANEXP/TANTANTANEXP
  147. 390 PRINT"   PRESS JOYSTICK [[156]PORT 2] UP OR DOWN
  148. 392 [153]"      TO CHANGE NUMBER OF PLAYERS
  149. 394 PRINT"          PRESS [149]FIRE TO PLAY
  150. 396 [153]"         HOW MANY PLAYERS?VERIFY";
  151. 398 [153][163]27)NP"CMDCMDCMD";
  152. 400 JS[178][194](56320)[175]31:[129]L1[178]1[164]75:[130]
  153. 402 [139]JS[178]30[167]NP[178]NP[170]1:[139]NP[178]5[167]NP[178]1
  154. 404 [139]JS[178]29[167]NP[178]NP[171]1:[139]NP[178]0[167]NP[178]4
  155. 406 [139]JS[179][177]15[167]398
  156. 408 [153]"LOAD":[142]
  157. 410 [178] INITIALIZE [178]
  158. 412 PL[178]1:SP[178]53248:R[178][187]([171]TI)
  159. 414 LF[178]54272:HF[178]54273:WV[178]54276:SR[178]54278
  160. 416 RN$(1)[178]"STEPWAITGETCMDCMDGETWAITGET"
  161. 418 RN$(2)[178]"VAL CMDCMD STR$"
  162. 420 RN$(3)[178]"VAL CMDCMDSTR$ "
  163. 422 DN$[178]"
  164. 424 DIM DI(5),MX(4,20),SC(4,5),HS(4)
  165. 426 FORL1=LFTOLF+24:POKEL1,0:NEXT:POKELF+24,15
  166. 428 IFPEEK(829)=234THEN434
  167. 430 FORL1=0TO511:READA:POKE12288+L1,A:NEXT
  168. 432 FORL1=512TO575:POKE12288+L1,.:NEXT:POKE830,0:POKE831,0
  169. 434 FORL1=1TO5:POKESP+39+L1,1
  170. 436 POKESP+2*L1,52:POKESP+1+2*L1,60+L1*24:REM COLOR,X,Y POS
  171. 438 NEXT
  172. 440 POKE2040,192:POKESP+39,9:POKESP,30:POKESP+1,212:REM LEFT
  173. 442 POKE2047,199:POKESP+46,7:POKESP+14,120:POKESP+15,86:REM RIGHT
  174. 444 POKESP+16,127
  175. 446 FORL1=1TONP:HS(L1)=PEEK(829+L1*2)*256+PEEK(830+L1*2):NEXT
  176. 448 RETURN
  177. 450 = SPRITE DATA =
  178. 452 * LEFTHAND *
  179. 454 DATA000,000,000,000,000,000,000,000
  180. 456 DATA096,000,000,224,000,001,192,000
  181. 458 DATA003,128,000,007,000,028,014,000
  182. 460 DATA014,061,192,007,123,064,007,118
  183. 462 DATA224,007,189,160,007,219,112,007
  184. 464 DATA222,208,007,221,176,003,255,096
  185. 466 DATA003,255,192,001,255,128,001,255
  186. 468 DATA000,001,254,000,003,252,000,000
  187. 470 * ONE *
  188. 472 DATA255,255,255,255,255,255,255,255
  189. 474 DATA255,255,255,255,255,255,255,255
  190. 476 DATA255,255,255,255,255,255,255,255
  191. 478 DATA255,231,255,255,195,255,255,195
  192. 480 DATA255,255,231,255,255,255,255,255
  193. 482 DATA255,255,255,255,255,255,255,255
  194. 484 DATA255,255,255,255,255,255,255,255
  195. 486 DATA255,255,255,255,255,255,255,000
  196. 488 * TWO *
  197. 490 DATA255,255,255,255,255,255,255,255
  198. 492 DATA207,255,255,135,255,255,135,255
  199. 494 DATA255,207,255,255,255,255,255,255
  200. 496 DATA255,255,255,255,255,255,255,255
  201. 498 DATA255,255,255,255,255,255,255,255
  202. 500 DATA255,255,243,255,255,225,255,255
  203. 502 DATA225,255,255,243,255,255,255,255
  204. 504 DATA255,255,255,255,255,255,255,000
  205. 506 * THREE *
  206. 508 DATA255,255,255,255,255,255,255,255
  207. 510 DATA207,255,255,135,255,255,135,255
  208. 512 DATA255,207,255,255,255,255,255,255
  209. 514 DATA255,231,255,255,195,255,255,195
  210. 516 DATA255,255,231,255,255,255,255,255
  211. 518 DATA255,255,243,255,255,225,255,255
  212. 520 DATA225,255,255,243,255,255,255,255
  213. 522 DATA255,255,255,255,255,255,255,000
  214. 524 * FOUR *
  215. 526 DATA255,255,255,255,255,255,243,255
  216. 528 DATA207,225,255,135,225,255,135,243
  217. 530 DATA255,207,255,255,255,255,255,255
  218. 532 DATA255,255,255,255,255,255,255,255
  219. 534 DATA255,255,255,255,255,255,255,255
  220. 536 DATA255,255,243,255,207,225,255,135
  221. 538 DATA225,255,135,243,255,207,255,255
  222. 540 DATA255,255,255,255,255,255,255,000
  223. 542 * FIVE *
  224. 544 DATA255,255,255,255,255,255,243,255
  225. 546 DATA207,225,255,135,225,255,135,243
  226. 548 DATA255,207,255,255,255,255,255,255
  227. 550 DATA255,231,255,255,195,255,255,195
  228. 552 DATA255,255,231,255,255,255,255,255
  229. 554 DATA255,255,243,255,207,225,255,135
  230. 556 DATA225,255,135,243,255,207,255,255
  231. 558 DATA255,255,255,255,255,255,255,000
  232. 560 * SIX *
  233. 562 DATA255,255,255,255,255,255,243,255
  234. 564 DATA207,225,255,135,225,255,135,243
  235. 566 DATA255,207,255,255,255,255,255,255
  236. 568 DATA243,255,207,225,255,135,225,255
  237. 570 DATA135,243,255,207,255,255,255,255
  238. 572 DATA255,255,243,255,207,225,255,135
  239. 574 DATA225,255,135,243,255,207,255,255
  240. 576 DATA255,255,255,255,255,255,255,000
  241. 578 * RIGHTHAND *
  242. 580 DATA000,000,000,000,000,000,006,000
  243. 582 DATA000,007,000,000,003,128,000,001
  244. 584 DATA192,000,000,224,000,000,112,056
  245. 586 DATA003,188,112,002,222,224,007,110
  246. 588 DATA224,005,189,224,014,219,224,011
  247. 590 DATA123,224,013,187,224,006,255,192
  248. 592 DATA003,255,192,001,255,128,000,255
  249. 594 DATA128,000,127,128,000,063,192,000
  250.